NGEE will now use B044 for 1min warning.  Everyone else does--so will they
concider this temporary until the scoring is completely rewritten

//7F0BEDD0:	F3900	display 1 minute warning
0FC26C43	JAL	7F09B10C	;set working player# to A0
8FA4017C	LW	A0,017C (SP)	;A0=cur player#
0FC30776	*JAL	7F0C1DD8
3404B044	*ORI	A0,R0,B044
0FC228F2	-JAL	7F08A3C8
00022025	*OR	A0,V0,R0	;A0=V0: p->string
8FA4017C	*LW	A0,017C (SP)	;T7=cur player#
24840001	*ADDIU	A0,A0,0001	;T8=T7+1: next player
0FC26919	-JAL	7F09A464	;V0=#players
AFA4017C	*SW	A0,017C (SP)	;SP+17C=T8: cur player#
1444FFF5	*BNE	V0,A0,7F0BEDD0
00000000	*NOP
00000000	NOP
(next line is just a LUI T7, so can sucker it)

+_+

language flag	800484D0

The funnier part - using concatenation to determine region for text files!
You can't necessarily tell if they're using the lookup table or ROM index
To get around this, assume it ends in a capital letter and do the following:
	(1) strcpy to the stack.
	(2) get strlen and add that to a copy of the stack pointer
	(3) use the language value as an offset into the lettercode word
	(4) suck the letter and put it at SP+strlen-1
	(5) use this as your lookup string


language flag used at:
A0C4	ok
B27C	
3E290	7F009764	ok	standard print routine
41428	
430AC	7F00E57C	ok	solo stage select
43A34	7F00EF04	ok	difficulty select
43AA4	7F00EF74	ok	also difficulty select
43B60	7F00F030	ok	also also difficulty select
84468	
84930	
849B8	
8C104	
D9414	
D9910	
DAAB8	
DC340	
DC830	
DC908	
DD2E0	
DD318	
DD354	
DD398	
DD418	
DD4F4	
DD52C	
DE398	
DE3F4	
E0438	
E05F0	
E1044	
E1160	
E1308	
E1354	
E2660	7F0ADB34	ok	007 options
E3290	
E34F4	7F0AE9C8	ok	007 options
F63A0	ok
F63C4	ok
F63E8	ok
F640C	ok
F6430	ok
F6224	
F6350	ok
F6470	7F0C1944	ok	007 options
F662C	7F0C16FC	ok	legal screen or loading
F6838	
F6854	do not tamper with this one!  offset into table!
F6894	7F0C1D68	used to offset string pull.  dies after this
F68B4	do not tamper with this one!  offset into table!
FA420	

+_+

Now the fun part...
give it a buffer of 32 bytes.  Overkill (or should be)
do stpncpy to stack, pull language byte, then replace last character
That's 7000AC70, A0=target, A1=source, A2=len; fries V1,A2,T6

7F0C1D08:	F6838	load mission text bank A0
	accepts: A0=p->string
	*ADDIU	SP,SP,FFC8
	*SW	RA,0034 (SP)
	*SW	A0,0038 (SP)	;SP+18=A0: text bank
//get language and filename
	*LUI	T8,8005
	*LB	T9,84D0 (T8)	;T8=800484D0: language
	*SLL	T0,A0,0x2	;T7=A0*4: A0->offset in text index
	*ADDU	T9,T8,T9	;T9=language->offset
	*ADDU	A0,A0,T8
	*LW	A1,84D0 (A0)	;A0=800484D0+offset: p->text bank name string
	*OR	A0,SP,R0
	*JAL	7000AC70	;stpncpy(A0,A1)
	+ADDIU	A2,R0,0020
	+LBU	T9,84D2 (T9)	;pull language letter...
	+SB	T9,FFFF (V0)	;and tack in place of the current one
//load resource
	+OR	A0,SP,R0
	ADDIU	A1,R0,0001	;A1=1
	ADDIU	A2,R0,0100	;A2=0x100
	JAL	7F0BCD04	;load resource using string A0
	ADDIU	A3,R0,0004	;A3=4
//copy to table - generic
	*LW	T1,0038 (SP)	;T1=text bank
	*LW	RA,0034 (SP)
	LUI	AT,8009
	SLL	T2,T1,0x2	;T2=T1*4: text bank->offset
	ADDU	AT,AT,T2
	SW	V0,C63C (AT)	;V0->8008C63C+offset: p->offset to text table
	JR	RA
	*ADDIU	SP,SP,0038

7F0C1D64:	F6894	load briefing text bank A0
	accepts: A0=p->string, A1=p->target, A2=size of target buffer
	*ADDIU	SP,SP,FFC8
	*SW	RA,0034 (SP)
	*SW	A0,0038 (SP)	;SP+18=A0: text bank
	*SW	A1,003C (SP)	;SP+1C=A1: p->target
	OR	A3,A2,R0	;A3=A2: size of target buffer
//get language and filename
	*LUI	T8,8005
	*LB	T9,84D0 (T8)	;T8=800484D0: language
	*SLL	T0,A0,0x2	;T7=A0*4: A0->offset in text index
	*ADDIU	T9,T8,T9	;T9=language->offset
	*ADDU	A0,T8,T0
	*LW	A1,84D0 (A0)	;A0=800484D0+offset: p->text bank name string
	*OR	A0,SP,R0
	*JAL	7000AC70	;stpncpy(A0,A1)
	+ADDIU	A2,R0,0020
	+LBU	T9,84D2 (T9)	;pull language letter...
	+SB	T9,FFFF (V0)	;and tack in place of the current one
//load resource
	+OR	A0,SP,R0
	*OR	A2,003C (SP)	;A2=SP+1C: p->target
	JAL	7F0BCD40	;load resource using string A0 into buffer A2 of size A3
	ADDIU	A1,R0,0001	;A1=1
//copy to table - generic
	*LW	T1,0038 (SP)	;T1=text bank
	*LW	RA,0034 (SP)
	LUI	AT,8009
	SLL	T2,T1,0x2	;T2=T1*4: text bank->offset
	ADDU	AT,AT,T2
	SW	V0,C63C (AT)	;V0->8008C63C+offset: p->offset to text table
	JR	RA
	*ADDIU	SP,SP,0038

it was too simple before, so lets complicate things:


7F0C1D08:	F6838
	accepts: A0=p->string
27BDFFC8	ADDIU	SP,SP,FFC8
AFBF0034	SW	RA,0034 (SP)
AFA40038	SW	A0,0038 (SP)	;SP+18=A0: text bank
//7F0C1D14:	send out for spaghetti
0FC30761	JAL	+newkid
27A50010	*ADDIU	A1,SP,0010
//7F0C1D1C:	load resource
27A40010	*ADDIU	A0,SP,0010
24050001	ADDIU	A1,R0,0001	;A1=1
24060100	ADDIU	A2,R0,0100	;A2=0x100
0FC2F341	JAL	7F0BCD04	;load resource using string A0
24070004	ADDIU	A3,R0,0004	;A3=4
//7F0C1D30:	branch to the table copier
1000000C	BEQ	R0,R0,+generic
00000000	NOP
	

7F0C1D64:	-> 7F0C1D38	0FC30759 -> 0FC3074E
27BDFFC8	ADDIU	SP,SP,FFC8
AFBF0034	SW	RA,0034 (SP)
AFA40038	SW	A0,0038 (SP)	;SP+18=A0: text bank
AFA5003C	SW	A1,003C (SP)	;SP+1C=A1: p->target
00063825	OR	A3,A2,R0	;A3=A2: size of target buffer
//7F0C1D4C:	send out for spaghetti
0FC30761	JAL	+newkid
27A50010	*ADDIU	A1,SP,0010
//7F0C1D54:	load resource for 7F0C1D64 routine
27A40010	*ADDIU	A0,SP,0010
8FA6003C	LW	A2,003C (SP)	;A2=SP+1C: p->target
0FC2F350	JAL	7F0BCD40	;load resource using string A0 into buffer A2 of size A3
24050001	ADDIU	A1,R0,0001	;A1=1
//7F0C1D64:	copy to table - generic
8FA90038	LW	T1,0038 (SP)	;T1=text bank
8FBF0034	LW	RA,0034 (SP)
3C018009	LUI	AT,8009
00095080	SLL	T2,T1,0x2	;T2=T1*4: text bank->offset
002A0821	ADDU	AT,AT,T2
AC22C63C	SW	V0,C63C (AT)	;V0->8008C63C+offset: p->offset to text table
03E00008	JR	RA
27BD0038	ADDIU	SP,SP,0038

newkid:	7F0C1D84
//get language and filename
AFBF0030	SW	RA,0030 (SP)
3C188005	LUI	T8,8005
831984D0	LB	T9,84D0 (T8)	;T8=800484D0: language
0319C821	ADDU	T9,T8,T9	;T9=language->offset
00047880	SLL	T7,A0,0x2	;T7=A0*4: A0->offset in text index
030F7821	ADDU	T7,T8,T7
0C004E1F	*JAL	7001387C	;V0=strlen A0
8DE484D0	*LW	A0,84D0 (T7)	;A0=800484D0+offset: p->text bank name string
00042825	*OR	A1,A0,R0	;A1=A0: source
27A40010	*ADDIU	A0,SP,0010
0C002B1C	JAL	7000AC70	;mempncpy(A0,A1)
24460001	*ADDIU	A2,V0,0001	;A2=strlen
8FBF0030	LW	RA,0030 (SP)
933984D2	LBU	T9,84D2 (T9)	;pull language letter...
03E00008	JR	RA
A059FFFE	SB	T9,FFFE (V0)	;and tack in place of the current one

strlen	7001387C; fries V1,T6,T7

+_+

This one handles the globals.  It was hacked already, so that's just copied here.

initialization:	load base text entries
S2=800484D0; specificly, it is set to the language flag address

//7F0C1820:	0xF6350	load LgunX
00128025	*OR	S0,S2,R0	;S0=800484D0: start of L_X lookup names
01129021	*ADDU	S2,T0,S2	;S2+=T0: 800484D0+language
92520002	*LBU	S2,0002 (S2)	;S2=language character
0FC30641	*JAL	newfunky
8E040098	*LW	A0,0098 (S0)	;literal offset in table to p->LgunE
3C118009	*LUI	S1,8009
2631C63C	*ADDIU	S1,S1,C63C	accounts for entry 00xx
AE220098	SW	V0,0098 (S1)
//7F0C1844:	load LtitleX
0FC30641	*JAL	newfunky
8E04009C	*LW	A0,009C (S0)
AE22009C	SW	V0,009C (S1)
//7F0C1870:	load LmpmenuX
0FC30641	*JAL	newfunky
8E0400A0	*LW	A0,00A0 (S0)
AE2200A0	SW	V0,00A0 (S1)
//7F0C1894:	load LpropobjX
0FC30641	*JAL	newfunky
8E0400A4	*LW	A0,00A4 (S0)
AE2200A4	SW	V0,00A4 (S1)
//7F0C18B8:	load LmpweaponsX
0FC30641	*JAL	newfunky
8E0400A8	*LW	A0,00A8 (S0)
AE2200A8	SW	V0,00A8 (S1)
//7F0C18DC:	load LoptionsX
0FC30641	*JAL	newfunky
8E0400AC	*LW	A0,00AC (S0)
AE2200AC	SW	V0,00AC (S1)
//7F0C1900:	load LmiscX
0FC30641	*JAL	newfunky
8E0400B0	*LW	A0,00B0 (S0)	;A0=pointer to L_E string ;T8=800484D4: p->txt string recall table
AE2200B0	SW	V0,00B0 (S1)
//7F0C1924:	return
8FBF0024	LW	RA,0024 (SP)
8FB1001C	LW	S1,001C (SP)
8FB00018	LW	S0,0018 (SP)
8FB20020	LW	S2,0020 (SP)
03E00008	JR	RA
27BD0028	ADDIU	SP,SP,0028


new routine:	7F0C1904	F6434	copy string, do language-specific lookup, load permanent
27BDFFC0	ADDIU	SP,SP,FFC0
AFBF003C	SW	RA,003C (SP)
0C004E1F	JAL	7001387C	;V0=strlen A0
00042825	OR	A1,A0,R0	;A1=A0: source
27A40010	ADDIU	A0,SP,0010
0C002B1C	JAL	7000AC70	;mempncpy(A0,A1)
24460001	ADDIU	A2,V0,0001	;A2=strlen
A052FFFE	SB	S2,FFFE (V0)	;and tack in place of the current one
//suck it up
24050001	ADDIU	A1,R0,0001
24060100	ADDIU	A2,R0,0100
0FC2F341	JAL	7F0BCD04	;load to permatext bank
24070006	ADDIU	A3,R0,0006	;(memory allocation segment 6 - permatext?)
8FBF003C	LW	RA,003C (SP)
03E00008	JR	RA
27BD0040	ADDIU	SP,SP,0040